package com.krisyu.statePattern.sp1;

/**
 * @Author: Kris
 * @Date: 2022/1/9 - 01 - 09 - 22:16
 * @Description: 表示过渡到 关闭的状态下，在关闭状态下时，要进行的动作。
 * @version: 1.0
 */
public class ClosingState extends LiftState{
    // 电梯关了，当然也能开
    @Override
    public void open() {
        System.out.println("-----------电梯门正关着，现在要准备开了。-----------\n\n");
        // 修改状态。
        super.context.setLiftState(Context.openingState);
        // 将开门的动作委托给 openingState来执行
        super.context.getLiftState().open();
    }

    @Override
    public void close() {
        // // 执行具体的电梯关门操作逻辑
        System.out.println("-----------！！！电梯门关了！！！-----------\n\n");
    }

    // 关了之后，是可以运行电梯了。
    @Override
    public void run() {
        System.out.println("----------电梯门要关上了，准备通知电梯开始运行。------------\n\n");
        // 修改状态为 运行态
        super.context.setLiftState(Context.runningState);
        // 将运行动作委托给 runState来处理
        super.context.getLiftState().run();
    }

    // 关了之后，也可以停止呀，就是维修状态下咯
    @Override
    public void stop() {
        System.out.println("----------电梯门关着，准备停止电梯, 可能是要进行维修电梯。------------\n\n");
        super.context.setLiftState(Context.stoppingState);
        super.context.getLiftState().stop();
    }
}
